package com.ryder.petmatediarybackend.module.social.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ryder.petmatediarybackend.module.social.dto.CreatePostDTO;
import com.ryder.petmatediarybackend.module.social.entity.SocialPost;
import com.ryder.petmatediarybackend.module.social.vo.PostVO;

import java.util.List;

/**
 * 描述: 社交动态表（仅支持图片，公开或私密）(SocialPost)表服务接口
 * 
 * @author Ryder
 * @version 1.0
 * @since 1.0 // 版本号，指明从哪个版本开始
 * 更新日期: 2025-10-31 03:35:59
 */
public interface SocialPostService extends IService<SocialPost> {

    /**
     * 创建社交动态
     *
     * @param userId 用户ID
     * @param dto 创建动态DTO
     * @return 动态详情VO
     */
    PostVO createPost(Long userId, CreatePostDTO dto);

    /**
     * 获取宠物圈子动态列表（公开+审核通过）
     *
     * @param currentUserId 当前用户ID（用于判断是否已点赞）
     * @return 动态列表
     */
    List<PostVO> getPetCirclePosts(Long currentUserId);

    /**
     * 获取动态详情（增加浏览量）
     *
     * @param userId 当前用户ID
     * @param postId 动态ID
     * @return 动态详情VO
     */
    PostVO getPostDetail(Long userId, Long postId);

    /**
     * 删除动态
     *
     * @param userId 用户ID
     * @param postId 动态ID
     */
    void deletePost(Long userId, Long postId);

    /**
     * 点赞动态
     *
     * @param userId 用户ID
     * @param postId 动态ID
     */
    void likePost(Long userId, Long postId);

    /**
     * 取消点赞
     *
     * @param userId 用户ID
     * @param postId 动态ID
     */
    void unlikePost(Long userId, Long postId);
}
